"""
仪表板服务
"""
from flask_login import current_user
from app.models import Project, Customer, get_db

class DashboardService:
    """仪表板服务类"""
    
    @staticmethod
    def get_dashboard_stats():
        """获取仪表板统计数据"""
        db = get_db()
        
        # 获取用户项目数量
        project_count = Project.query.filter_by(manager_id=current_user.id).count()
        
        # 获取用户客户数量
        customer_count = Customer.query.filter_by(manager_id=current_user.id).count()
        
        # 获取最近的项目
        recent_projects = Project.query.filter_by(manager_id=current_user.id).order_by(Project.created_at.desc()).limit(5).all()
        
        # 获取最近的客户
        recent_customers = Customer.query.filter_by(manager_id=current_user.id).order_by(Customer.created_at.desc()).limit(5).all()
        
        # 获取所有项目（用于筛选）
        all_projects = Project.query.filter_by(manager_id=current_user.id).all()
        
        # 构建项目类型分布数据（模拟数据）
        project_types = {
            'labels': ['Web开发', '移动应用', '数据分析', '系统集成', '其他'],
            'data': [3, 2, 1, 1, 1],
            'backgroundColor': ['#3B82F6', '#10B981', '#F59E0B', '#EF4444', '#8B5CF6']
        }
        
        # 构建项目来源数据（模拟数据）
        project_sources = {
            'labels': ['内部需求', '客户委托', '合作伙伴', '招标项目'],
            'data': [2, 3, 1, 1],  # 添加data字段用于图表
            'project_numbers': ['PROJ-2024-001', 'PROJ-2024-002', 'PROJ-2024-003', 'PROJ-2024-004']
        }
        
        # 构建项目经理负载数据（模拟数据）
        managers_load = [
            {'name': '张三', 'count': 3, 'contact': 'zhangsan@company.com'},
            {'name': '李四', 'count': 2, 'contact': 'lisi@company.com'},
            {'name': '王五', 'count': 1, 'contact': 'wangwu@company.com'}
        ]
        
        # 构建任务统计数据（模拟数据）
        task_stats = {
            'milestone_tasks': 5,
            'accepted_milestone_tasks': 2,
            'sub_tasks': 15,
            'accepted_sub_tasks': 8
        }
        
        # 构建stats对象，包含仪表板所需的所有统计信息
        stats = {
            'total_projects': project_count,
            'not_started_projects': 0,  # 默认值为0
            'in_progress_projects': 0,  # 默认值为0
            'completed_projects': 0,   # 默认值为0
        }
        
        return {
            'stats': stats,
            'project_types': project_types,
            'project_sources': project_sources,
            'managers_load': managers_load,
            'task_stats': task_stats,
            'all_projects': all_projects,
            'project_count': project_count,
            'customer_count': customer_count,
            'recent_projects': recent_projects,
            'recent_customers': recent_customers
        }